package org.grottarossa.ui.core.actions;

import com.vaadin.event.Action;

/**
 * Rappresenta una {@link Action} Vaadin che pu� essere abilitata o meno su un certo target
 * @author 
 */
public abstract class CustomAction extends Action
{
	public CustomAction(String caption)
	{
		super(caption);
	}

	/**
	 * Determina se l'azione � eseguibile su un certo target
	 * @param target lo stesso target di {@link #run(Object)}
	 * @return true quando � eseguibile
	 */
	public boolean isEnabled(Object target) {
		return true;
	}

	/**
	 * Esegue l'azione su un certo target
	 * @param target argomento opzionale utilizzabile dall'implementazione specifica dell'azione
	 */
	public abstract void run(Object target);
}
